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

Вернуться на верх