Вы можете установить начальное значение:
def __init__(self, *args, good_id1=None, **kwargs):
super(forms.ModelForm, self).__init__(*args, **kwargs)
if good_id1 is not None:
obj = Good.objects<b>.get(</b>id=good_id1<b>)</b>
self.fields['Name']<b>.initial</b> = obj.Name
self.fields['Size'].queryset = <b>obj.</b>Size.all()
Таким образом, мы используем Good.objects.get(..)
, чтобы получить объект Good
, который соответствует данному идентификатору, и мы передаем атрибут Name
этого объектав качестве значения .initial
для этого поля.
Но если это только вопрос инициализации ModelForm
значениями объекта, вы можете использовать instance=
параметр [Django-doc] , например:
# construct a form with data from an instance
GoodGet(<b>instance=Good.objects.get(id=some_id)</b>)
При этом в вашей форме GoodGet
есть некоторые странные части.Вероятно, лучше добавить суффикс Form
, вы указываете поля в классе, а не в классе Meta
, и использование { 'value': Good.object.all() }
не имеет смысла, так как значение не может быть набором Good
объектов.
class GoodGet<b>Form</b>(forms.ModelForm):
Size = forms.ModelChoiceField(queryset=Good.objects.all())
Name = forms.CharField(widget=forms.<b>TextInput()</b>}))
class Meta:
model = Good_Get
fields = '__all__'
# ...