【问题标题】:Dynamic django choice field动态 django 选择字段
【发布时间】:2021-04-22 22:10:35
【问题描述】:

我有 4 种型号:Products(产品列表:冰柜、微波炉、电视和个人电脑)、ProductType(娱乐和家用电器)、Credit(每次购买都会注册一个信用)和@ 987654324@(客户购买产品的原因)。

PurchaseReason 依赖于productType,所以purchaseReason 有一个foreignKey 字段productType

此外,每个credit 都有一个product 作为foreignKey 和一个purchaseReason 作为foreignKey。

另外,我将ProductReason 字段作为credit 模型中的选择字段,并且我希望根据信用模型的product 字段动态设置选项。

我正在创建一个 API,所以我认为这不能用 modelForms 处理,但我不确定。艰苦的工作将是序列化程序(DRF)和 django-admin(特别是这个,因为在我的产品中,django 管理员扮演着重要的角色)

在 Django 中管理我的模型的最佳方法是什么?

这是我的模型。在信用我不确定如何实施购买原因:

class Credit(models.Model):
    client = models.ForeignKey('clients.Client', on_delete=models.SET_NULL)
    name = models.CharField(max_length=30, null=False, blank=True)
    product = models.ForeignKey('product',on_delete=models.SET_NULL)
    reason_purchase = models.ChoiceField(????)
class PurchaseReason(models.Model):
    product_type = models.ForeignKey(product_type, on_delete=models.CASCADE)
    reason = models.CharField(max_length=30, null=False, blank=True)
class ProductType(models.Model):
    name = models.CharField(max_length=30, null=False, blank=False)
class Product(models.Model):
    model = models.CharField(max_length=30, default=None, null=True)
    product_type = models.ForeignKey(product_type, on_delete=models.CASCADE)

【问题讨论】:

  • 请提供您的代码示例

标签: python django api django-models backend


【解决方案1】:

当我们使用外键时,我们需要提及该特定模型的模型名称,以便我们可以将该特定模型作为参考实体集成到该模型中。看看这个例子。

from django.db import models

class Reporter(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField()

    def __str__(self):
        return "%s %s" % (self.first_name, self.last_name)

class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.headline

    class Meta:
        ordering = ['headline']

您没有正确提及型号名称。它应该是 Product 代替 Creditproduct 字段中的 'product'

使用此参考https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_one/

我认为在此之后您应该能够正确使用外键字段。虽然,如果你不能,你可以分享实际目标。我会帮你写出正确的模型。 最良好的祝愿:)

【讨论】:

猜你喜欢
  • 2018-07-16
  • 2011-09-01
  • 2019-04-04
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多