如何使用表单或表单集填充模型实例

时间:2017-03-17 19:22:15

标签: python django django-models django-forms

我有以下型号:

class criterion(models.Model):
    quantity = '0'
    quality = '1'
    ascending = '0'
    descending = '1'
    three = '3'
    five = '5'
    seven = '7'
    ten = '10'
    type_choices = (
        (quantity,'Ποσοτικό'),
        (quality,'Ποιοτικό'),
        )
    monotonicity_choices = (
        (ascending,'Αύξον'),
        (descending,'Φθίνον'),
        )
    a_choices = (
        (three,'Τριβάθμια'),
        (five,'Πενταβάθμια'),
        (seven,'Εφταβάθμια'),
        (ten,'Δεκαβάθμια'),
        )
    criterion_research = models.ForeignKey('research', on_delete=models.CASCADE,null=True)
    criterion_name = models.CharField(max_length = 200,verbose_name='Όνομα Κριτηρίου')
    criterion_type = models.CharField(max_length = 15,choices = type_choices , default = quantity,verbose_name='Τύπος')
    criterion_monotonicity = models.CharField(max_length = 15,choices = monotonicity_choices , default = ascending,verbose_name='Μονοτονία')
    criterion_a = models.CharField(max_length = 30,choices = a_choices , default = five,verbose_name='Κλίμακα',help_text='Επιλέξτε μία από τις 4 κλίμακες που θα μετρηθεί το κριτήριο.')
    criterion_worst = models.FloatField(default=' ',verbose_name='Χειρότερη Τιμή',help_text='Επιλέξτε τη χειρότερη τιμή την οποία μπορεί να πάρει το κριτήριο.',blank=True)
    criterion_best = models.FloatField(default=' ',verbose_name='Καλύτερη Τιμή',help_text='Επιλέξτε τη καλύτερη τιμή την οποία μπορεί να πάρει το κριτήριο.',blank=True)
    def __str__(self):
        return self.criterion_name

class alternative(models.Model):
    name = models.CharField(max_length = 200,verbose_name='Όνομα Εναλλακτικής')
    ranking = models.IntegerField(default='1')
    alternative_research = models.ForeignKey('research', on_delete=models.CASCADE)
    criteria = models.ManyToManyField('criterion', through='criterionvalue',blank=True)
    def __str__(self):
        return self.name

class criterionvalue(models.Model):
    value = models.IntegerField(default='0')
    alt = models.ForeignKey('alternative',on_delete=models.CASCADE)
    crit = models.ForeignKey('criterion',on_delete=models.CASCADE)

我创建了一个视图,用于填充条件实例和替代实例(manytomany字段除外)。

我想查询所有可能的标准和备选方案,然后基于填充标准实例。在完成这些之后,我想要指定标准值实例与备选实例的多重关系。我想做一个然后,使用替代项和标准查询集的长度将标准值模型的形式集(由表单集创建的表单)与替代项和标准相关联(为了使用表单呈现关联矩阵)。

但我认为这样的想法是牵强附会的。 关于如何实现这样的事情的任何想法?

0 个答案:

没有答案