Django:通过表单编辑由另一个模型引用的多个模型字段

时间:2012-03-11 21:15:57

标签: django django-forms many-to-many field

我正在尝试通过ModelForm创建一个包含模型列表的模型实例,通过多对多字段。但是,当发生这种情况时,我需要能够更改被引用的字段之一。

以下是剥离的代码:

class AllAtt(models.Model):
    weighting = models.IntegerField(null=True,blank=True)
    mass = models.IntegerField(null=True,blank=True)
    required_Power = models.IntegerField(null=True,blank=True)
    memory = models.IntegerField(null=True,blank=True)

class Mission(AllAtt):
    name = models.CharField(max_length=50)
    def __unicode__(self):
        return self.name

class Scenario(models.Model):
    name = models.CharField(max_length=50)
    creation_date = models.DateTimeField(default=datetime.now)
    creator = models.ForeignKey(User,null=True,blank=True)
    mission = models.ManyToManyField(Mission)
    def __unicode__(self):
        return self.name

class ScenarioForm(ModelForm):
    class Meta:
        model = Scenario
        fields = ('name','mission',)

从数据库导入Missions实例的位置。目前,这允许我从multiplechoicefield中选择Mission实例,但这不是我需要的。我希望能够在场景中包含所有Mission实例,然后通过表单更改“权重”字段。

我想要做的一个简单示例: 我有一定数量的任务(任务),当他们结合起来时他们会完成某些任务(场景)。 人类有很多任务功能。如果我的场景是“为日期做好准备”,那么这些功能的重要性可能会加权: 制作咖啡 - 0,喂狗-2,淋浴 - 3,穿衣 - 5.如果情景是“正在使用Django代码”,那么这些功能的权重为:制作咖啡 - 5,喂狗 - 2,淋浴 - 0,穿好衣服 - 1.每次我制作一个新的场景时,我都需要能够改变所有可能任务的权重。

非常感谢有关如何实现这一目标的任何帮助或见解。谢谢!

1 个答案:

答案 0 :(得分:0)

据我了解,您需要在Mission中指定Scenario关系的权重。

基本上你需要的是through模型(有重量)。您可以在此处看到它:https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany