Django ModelForm Foreign Key Dropdown
У меня возникла проблема, и я не смог найти ошибку. Мой выпадающий список с внешним ключом показывает "Объект клиента(1)", но мои модели, представления и формы аналогичны для всех представлений, которые имеют ту же ситуацию.
Модель:
class Cliente(models.Model):
nome = CharField(max_length=50)
cnpj = IntegerField()
dateCriacao = DateTimeField(auto_now_add=True)
def __self__(self):
return self.nome
Модель для продукта:
class ProdutoCliente(models.Model):
def filePath(produto, file):
return os.path.join('produtos', produto, file)
numeroSerie = CharField(max_length=30, null=True)
produto = CharField(max_length=30)
file = FileField(upload_to=filePath)
cliente = ForeignKey(Cliente, on_delete=CASCADE)
dateCriacao = DateTimeField(auto_now_add=True)
def __self__(self):
return self.id
Просмотров:
def NewCustomerProducts(request):
createCustomerProducts = CustomerProductsForm()
if request.method == 'POST':
createCustomerProducts = CustomerProductsForm(request.POST or None)
if createCustomerProducts.is_valid():
createCustomerProducts.save()
return redirect('products:Customer_Products')
else:
createCustomerProducts = CustomerProductsForm()
context = {'createCustomerProducts' : createCustomerProducts}
return render(request, 'produtos/NewCustomerProducts.html', context)
Формы:
class CustomerProductsForm(ModelForm):
numeroSerie = fields.CharField (blank=True)
class Meta:
model = ProdutoCliente
fields = [
'numeroSerie',
'produto',
'cliente',
'file'
]
labels = {
'numeroSerie': ('Número de Série'),
'produto': ('Produto'),
'cliente': ('Cliente'),
'file': ('Arquivo')
}
результат: https://imgur.com/Cft5AOW
Используйте __str__
вместо __self__
в вашем файле моделей:
def __str__(self):
return self.nome
Ознакомьтесь с документацией Django: https://docs.djangoproject.com/en/4.0/ref/models/instances/#str