Формы могут быть сложными в Джанго.Formsets может заставить вас выйти из Django.Я в этом месте.
Каковы различные варианты использования и соображения того, какой из них использовать?
Я ищу более подробные рекомендации относительно того, когда использовать каждую фабрику, поскольку они, кажется, зависято том, когда вы знаете, какой тип формы, поля, а также о том, создаете ли вы, редактируете или удаляете (полностью отдельные формы или родительскую модель).Я прочитал множество пошаговых руководств, но изо всех сил пытаюсь увидеть более широкую картину, особенно когда я пытаюсь перейти от представлений на основе функций к представлениям на основе классов.
Ниже приведен псевдокод с предположениями / ограничениями, которые помогут вам помочья понимаю разницу.Это может помочь предоставить psuedocode, например, какая форма (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
- , который вы собираетесь назначать блюдам на основе
Reservation
, и у вас достаточно информации, чтобысделать это, и вы можете использовать ModelForm легко, но не обязательно
Позже человек, который ест блюдо, хочет сделать несколько фотографий, а вы не знаете, сколько ихпримет
- , какую фабрику вы бы использовали?
- это зависит от того, все ли формы
ModelForms
? - при условии:
- мы потребуем, чтобы они взяли не менее двух
- , у нас есть доступ к
Meal
, Reservation
и Dishes
- , которые по желанию можно присвоить
Dish