Как вывести ForeignKey нужное поле, а не значение pk в django forms?
В поле формы device
выводится pk
указатель на foreignkey
, а мне надо чтобы в форме выводилось name
. Как сделать?
forms
class SimpleOrderEditForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(SimpleOrderEditForm, self).__init__(*args, **kwargs)
self.fields['category_service'].choices = [(k, v) for k, v in self.fields['category_service'].choices if k not in status_excluded]
self.fields['device'] = ChoiceTxtField(queryset=Device.objects.filter(category_service__in=self.fields['category_service'].queryset).order_by('-used'))
class Meta:
model = Orders
fields = ['category_service', 'device']
widgets = {
'category_service': forms.Select(attrs={'class': 'form-control', 'autocomplete': 'on'}),
}
models
class Device(models.Model):
name = models.CharField(max_length=150, db_index=True, unique=True)
used = models.IntegerField(default=0)
category_service = models.ForeignKey('Category_service', default=1, on_delete=models.SET_DEFAULT, null=True)
def __str__(self):
return str(self.name)
def __repr__(self):
return str(self.name)
class Orders(models.Model):
device = models.ForeignKey(Device, default=1, on_delete = models.SET_DEFAULT, null=True, related_name='get_device')
category_service = models.ForeignKey('Category_service', default=1, on_delete=models.SET_DEFAULT, null=True, related_name='get_category_service')
def __str__(self):
return str(self.pk)
Тебе на форме для FK нужно не текстовое поле выводить, а селектор с выбором