动态django选择字段



我有四种型号:Products(产品列表:冷冻柜、微波炉、电视和电脑(、ProductType(娱乐和家用电器(、Credit(每次购买都会注册信用卡(和PurchaseReason(客户购买产品的原因(。

PurchaseReason依赖于productType,因此purchaseReason具有foreignKey字段productType

此外,每个credit具有作为foreignKey的product和作为foreignKey的purchaseReason

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

我正在创建一个API,所以我认为这不能用modelForms处理,但我不确定。艰苦的工作将是使用序列化程序(DRF(和django管理员(特别是这个,因为在我的产品中,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)

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

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/

我认为你应该能够在这之后正确使用Foreignkey字段。不过,如果你不能,你可以分享实际目标。我会帮你写正确的模型。最美好的祝愿:(

最新更新