Django : changing a specific form in modelformset

Обновить

April 2019

Просмотры

23 раз

1

Вот загадка. Это упрощенная версия этой проблемы я имею дело с, так, чтобы мы могли захватить основную проблему. Таким образом, для простоты и актуальности, а не все поля и отношения приведены здесь.

Итак, у меня есть modelformset, и я хотел бы получить доступ к каждой отдельной форме для изменения поля на основе QuerySet.

class PlayerType(models.Model):
    type = models.CharField(max_length=30, choices = PLAYER_TYPES)

class Player(models.Model):
    name = models.CharField(max_length=30, blank=False, null=False)
    player_type = models.ForeignKey(PlayerType, related_name ='players')
    contract_price = models.DecimalField(max_digits = 10, decimal_places = 2, blank = False, null = False)
    price_unit_of_measurement = models.CharField(max_length=20, choices=STANDARD_UOM)

Forms.py

class PlayerForm(ModelForm):
    class Meta:
        fields = ['name','price_unit_of_measurement']

views.py

PlayerFormSet = modelformset_factory(Player, form = PlayerForm, extra = 5)    

Теперь предположим, что я хочу, чтобы отобразить различные единицы измерения в зависимости от того, какой игрок я показываю. Например, контракт игрок 1 может быть основан на единовременном или сумму за игру, и контракт другого игрока может быть основан на количестве сыгранных минут, цена за месяц, и т.д. в зависимости от типа плеера.

В сущности, я хотел бы знать, как получить доступ к каждой форме в modelformset и изменить единицы измерения для этой формы в одиночку, из-умолчанию в модели. Я также понимаю, что inlinemodelformset является более подходящим для этого применения в качестве игрока, связанного с PlayerType на один-ко-многим основы.

0 ответы