我正在使用
SortedManyToManyField
来自django-sortedm2m的字段,如我的模型中的以下所示:
import uuid
from django.db import models
from sortedm2m.fields import SortedManyToManyField
class Category(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
parent = models.ForeignKey(
to="self", on_delete=models.SET_NULL, null=True, blank=True, related_name="subcategories",
)
name = models.CharField(max_length=250)
class Product(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=250)
categories = SortedManyToManyField(to=Category, blank=True, related_name="product_items")
现在,让我们创建一些数据并将其添加到这两个字段中:
# create some categories
c1 = Category.objects.create(name="C1")
c2 = Category.objects.create(name="C2")
c3 = Category.objects.create(name="C3")
# create some products
p1 = Product.objects.create(name="P1")
p2 = Product.objects.create(name="P2")
p3 = Product.objects.create(name="P3")
# add categories to product P1
p1.categories.add(c1, c2, c3)
# add products to category C1
c1.product_items.add(p1, p2, p3)
现在,发生的是
categories
以正确的顺序插入和检索,其中作为产品添加到
product_items
不是。
当我检查底层
班
字段的类型
p1.categories
,它说它
<class 'sortedm2m.fields.create_sorted_many_related_manager.<locals>.SortedRelatedManager'>
当我对反向关系(product_items)做同样的操作时,它会说
<class 'django.db.models.fields.related_descriptors.create_forward_many_to_many_manager.<locals>.ManyRelatedManager'>
这是否意味着订单是为定义的字段显式保存的
按人排序字段
字段,而不是related_name/反向关系?
我必须明确定义字段吗
产品_项目
作为一个
按人排序字段
上的字段
Category
模型
我真的一直在努力弄清楚这一点,但并不缺乏。我感谢你的帮助。