在我的主要类模型交易中,我有一些字段作为描述,价格,date_created等。我现在必须添加一些具有子字段的字段。例如,我正在尝试将年龄字段添加到交易。此年龄字段还包含子字段(如score_for_kid,score_for_baby,score_for_old等),我想从管理员编辑这些分数。
这是我的models.py:
class Deals(models.Model):
description = models.TextField()
price = models.DecimalField(max_digits=7, decimal_places=2)
url = models.URLField(verify_exists=False)
currency = models.CharField(max_length=3)
created_date = models.DateField(auto_now_add=True)
kid_score = models.IntegerField(max_length=2,default=0)
teenager_score = models.IntegerField(max_length=2,default=0)
youth_score = models.IntegerField(max_length=2,default=0)
old_score = models.IntegerField(max_length=2,default=0)
我不想在模型中存储所有这些子字段(在4个不同字段中大约20-25个),而是存储连接到这些子字段的年龄字段。 ManyToManyField会为此工作吗?
基本要求是当用户在浏览器上选择子字段(比如孩子)时,会显示所有具有较高孩子分数的对象。
我对Django很新,任何有关这方面的帮助都会很棒。感谢。
答案 0 :(得分:0)
如果我理解你的问题,你需要使用ForeignKey字段。
class Deals(models.Model):
description = models.TextField()
price = models.DecimalField(max_digits=7, decimal_places=2)
#...
age = models.ForeignKey(Age)
class Age(models.Model):
kid_score = models.IntegerField(max_length=2,default=0)
teenager_score = models.IntegerField(max_length=2,default=0)
#...
好好阅读docs on Models。您可能还发现对关系数据库/基本sql进行一些阅读很有用。
当您在django admin中编辑对象时,您可能希望使用InlineModelAdmin类。
更新
重新阅读您的问题,听起来您可能只想在主要交易模型上显示/隐藏这些附加字段。如果是这种情况,那么您希望在管理中使用字段集,并使用“崩溃”类。 docs中有一个例子。
如果您希望每个Deal
记录与其关联多个kid_score
,那么您需要一个外键。如果每个Deal
只能有一个kid_score
,那么你需要在主模型中保留kid_score
(和其他)字段(如果这很令人困惑,那么一定要对sql / relational进行一些阅读数据库)。