我是Django的新手,我正试图用slug预先填充我的表格中的一个字段。
我从另一个模特那里得到了slu ..我没有使用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,
})
答案 0 :(得分:1)
所以,我明白了! 在views.py中,"如果form.is_valid():" 我说这个:
prev = form.save(commit=False)
prev.id_p = thing.slug
prev.save()
以这种方式,我在提交表单之前将数据放在排除字段中。