在Django中,表单可能很复杂。表单集可以使您想退出Django。我在那个时候。
[有哪些不同的用例,并考虑使用哪个?
我正在寻找有关何时使用每个工厂的更好的指导,因为它们似乎取决于您何时知道什么类型的表单,字段以及是否要创建,编辑或删除(完全是单个表单)或完全是父模型)。我已经阅读了许多演练,但是正在努力查看大图,尤其是当我尝试从基于函数的视图转换为基于类的视图时。
下面是一些带有假设/限制的伪代码,以帮助您帮助我理解不同之处。提供伪代码可能会有所帮助,例如哪种类型的表单(ModelForm或常规)与Formset一起使用,或者应该从表单中选择哪种形式,因为这似乎是创建具有关系的表单的趋势。
假设您有一些型号:
pop
并且您想创建一个新的class Dish(models.Model):
name = models.CharField(max_length=50)
class Meal(models.Model):
name = models.CharField(max_length=50)
dishes = models.ManyToManyField(Dish,
# through='OPTIIONALMealDishIntermediaryClassTable',
related_name="meal")
class Reservation(models.Model):
date = models.DateTimeField()
greeting = models.CharField(max_length=255)
meal = models.OneToOneField(Meal, on_delete=models.CASCADE)
class MealPhotos(models.Model):
photo = models.OneToOneField(Photo, on_delete=models.CASCADE, related_name='mealPhoto')
meal = models.ForeignKey(Meal, on_delete=models.CASCADE)
# optional, so a photo can be attached to a dish if the picture is just of the dish
dish = models.ForeignKey(Dish, blank=True, null=True, on_delete=models.CASCADE)
,您想同时发送一个Meal
:
Reservation
? (表示您将如何处理ModelForms
的Meal
分配)Reservation
,但是您仍然必须同时制作Meal
/相同的视图。Reservation
,因为预订会告诉您。Dish
尚不存在,因为尚未准备好餐点。 然后,您要根据MealPhotos
的说明添加一些菜肴:
Reservation
?ModelForms
,并且您有一个Meal
Reservation
将餐点分配给餐点,并且您有足够的信息来这样做,并且可以轻松地使用ModelForm,但不是必需的]]后来,吃这道菜的人想拍照,而你不知道要拍多少张
Reservation
?ModelForms
,Meal
和Reservation
Dishes
在Django中,表单可能很复杂。表单集可以使您想退出Django。我在那个时候。有哪些不同的用例,以及要使用哪些用例的注意事项?我在寻找...
3个表单工厂之间的区别基本上是: