在 models.py :
中from django.db import models
from django.utils.translation import ugettext as _
# Create your models here.
class Category(models.Model):
name = models.CharField(_(u"Name"), max_length=250)
products = models.ManyToManyField("Product", verbose_name=_(u"Products"), \
blank=True, null=True, related_name="+")
class Product(models.Model):
name = models.CharField(_(u"Name"), max_length=250)
category = models.ManyToManyField("Category", verbose_name=_(u"Category"), \
blank=True, null=True, related_name="+")
在管理页面中:
问题:
如何设置 models.py 中products
和category
m2m字段之间的关系,以便在admin-page中,如图所示,{{1 (产品)被标记为属于b2
(类别)
欢迎任何有关[产品,类别]实施的建议,谢谢。
附:
我是Django的新手。抱歉我的英文。
答案 0 :(得分:7)
问题是您有两个 ManyToMany字段。正如您所指出的那样,当关系设置在其中一个中时,它就不在另一个中。
解决方案很简单:删除其中一个字段。您只需要在关系的一侧使用ManyToManyField。 Django让您自动访问另一方。因此,如果您在categories
模型上保留Product
字段,则可以my_product.categories.all()
获取与产品相关联的类别;和my_category.product_set.all()
获取属于某个类别的产品。
你还需要删除related_name="+"
属性:你可能会把它放进去,因为你遇到了冲突,这应该是一个线索。