gpt4 book ai didi

Django 多对多关系

转载 作者:行者123 更新时间:2023-12-04 18:48:59 28 4
gpt4 key购买 nike

模型.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="+")

在管理页面:
m2m relationships

问题:
products之间的关系如何?和 category中的 m2m 字段 模型.py 设置为在管理页面中,如图所示, b2 (产品)被标记为属于 a2 (类别)。
欢迎对[产品,类别]的实现提出任何建议,谢谢。

附言
我是 Django 的新手。对不起我的英语不好。

最佳答案

问题是您有两个 ManyToMany 字段。正如您所指出的,当关系在其中一个中设置时,它不在另一个中。

解决方案很简单:删除其中一个字段。您只需要在关系的一侧有一个 ManyToManyField。 Django 会让你自动访问另一端。所以,如果你保留了 categories场上Product模型,你可以做my_product.categories.all()获取产品关联的类别;和 my_category.product_set.all()获取属于某个类别的产品。

您还需要删除 related_name="+"属性:你可能已经把它放进去是因为你遇到了冲突,这应该是一个线索。

关于Django 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9144315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com