【发布时间】:2017-09-22 21:59:45
【问题描述】:
我是 Django 的新手,我正在尝试用 slug 预填充表单的一个字段。
我从另一个型号那里得到了蛞蝓。我没有使用 ForeignKey,因为它向我显示了一个包含我的对象的列表,我想以我在 url 中使用的相同 slug 的形式保存。
也许我的想法不对。我该怎么办?
谢谢!
这是我的模型:
from django.db import models
class Thing(models.Model):
name = models.CharField(max_length=255,)
rut = models.CharField(max_length=12, blank= True)
cel = models.CharField(max_length=12, blank= True)
slug = models.SlugField(unique=True)
class Control(models.Model):
id_p = models.SlugField()
pa = models.CharField(max_length=3,)
我的表格
from django.forms import ModelForm
from collection.models import Thing, Control, Medicamento
class ThingForm(ModelForm):
class Meta:
model = Thing
fields = ('name', 'rut','cel','pet',)
class ControlForm(ModelForm):
class Meta:
model = Control
exclude = ['id_p']
这就是我在视图中所做的事情
def add_control(request, slug):
thing = Thing.objects.get(slug=slug)
form_class = ControlForm
form_class(initial={'id_p':thing})
if request.method == 'POST':
form = form_class(request.POST)
if form.is_valid():
form.save()
return redirect('thing_detail', slug=thing.slug)
else: form = form_class()
return render(request, 'things/control.html', {
'thing': thing,
'form': form,
})
【问题讨论】:
-
form_class(initial={'id_p':thing.slug})?您还需要在ControlForm中从fields中排除id_p。 -
@ozgur 不起作用。数据库中字段 id_p 为空
-
我知道了,谢谢你的排除部分。
标签: django forms django-models django-forms django-views