ibeautiful
2023-09-19 14:05:26
您好,我正在使用 ModelFieldChoice 在模型“文章”中設(shè)置來自提供者的外鍵(文章屬于提供者)。模板中的選擇與數(shù)據(jù)庫中的所有提供程序一起正確顯示,但是當(dāng)我嘗試發(fā)布表單時(shí),它會拋出一個(gè)錯(cuò)誤,表明即使我傳遞了選擇值,它也是必需的。此外,我在數(shù)據(jù)庫中為文章設(shè)置了值,當(dāng)我嘗試編輯它時(shí),表單中的所有字段都填充了除選擇之外的正確數(shù)據(jù)。這些是我的模型,我將不勝感激的幫助,謝謝!抱歉,如果我做錯(cuò)了什么,這是我第一次在 stackoverflow 上發(fā)帖。Article.py 模型class Article(models.Model): codigo = models.CharField(max_length=100, verbose_name='Codigo') proveedor = models.ForeignKey(Provider, on_delete=models.CASCADE) descripcion = models.CharField(max_length=200, verbose_name='Descripcion',null=False, blank=True) marca = models.CharField(max_length=100, verbose_name='Marca',null=True, blank=True) rubro = models.CharField(max_length=100, verbose_name='Rubro',null=True, blank=True) nota = models.TextField(verbose_name='Nota',null=True) costo = models.CharField(max_length=50, verbose_name='Costo',null=False, blank=True) created = models.DateTimeField(auto_now_add=True, verbose_name="Fecha de creación",null=True, blank=True) updated = models.DateTimeField(auto_now=True, verbose_name="Fecha de edición",null=True, blank=True)class Meta: verbose_name = "articulo" verbose_name_plural = "articulos" ordering = ['-descripcion']def __str__(self): return self.descripcion在views.py中,當(dāng)我打印“proveedor_id”時(shí),該值正確顯示在控制臺中,但“is_valid()”失敗并打印錯(cuò)誤"<ul class="errorlist"><li>proveedor<ul class="errorlist"><li>Este campo es obligatorio.</li></ul></li></ul>"(必填字段,就好像我沒有傳遞它一樣)
1 回答

largeQ
TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
首先,將ArticleCreate序列化器簡化為這樣:
class ArticleCreate(forms.ModelForm):
class Meta:
model = Article
然后在請求傳遞proveedor字段中,不是proveedor_id. 在 Django/DRF 中,您應(yīng)該使用"{{association_name}}": id模式傳遞關(guān)聯(lián) ID,而不是"{{association_name}}_id": id
所以你也可以簡化你的觀點(diǎn):
def add_article(request):
if request.method == 'POST':
create = ArticleCreate(request.POST)
if create.is_valid():
create.save()
...
添加回答
舉報(bào)
0/150
提交
取消