我在一页,详细页面(Django 1.11)上连接两个模型时遇到问题。
我有模型事件 - 我想在详细信息页面上显示此模型的详细信息 - 这对我有用。
class Event(models.Model):
title = models.CharField(max_length=500)
date = models.DateField()
text = models.TextField()
image = FilerImageField(null=True, blank=True)
free_places = models.IntegerField()
class Meta:
ordering = ['-date']
def __str__(self):
return self.title
另一方面,我有模型注册
class Register(models.Model):
event = models.ManyToManyField(Event)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
company = models.CharField(max_length=30, blank=True)
street = models.CharField(max_length=50, blank=True)
post_code = models.CharField(max_length=30, blank=True)
city = models.CharField(max_length=30, blank=True)
email = models.EmailField()
phone_number = models.IntegerField(max_length=30)
def __str__(self):
return self.first_name
我想在详细信息页面上的文件夹注册用户,下面是事件的详细信息。
这是我的详细视图,我想在其中显示事件的详细信息并将数据从用户传输到注册模型:
class EventDetailView(DetailView, FormMixin):
model = models.Event
form_class = forms.RegisterForm
def get_success_url(self):
return reverse('events:list')
def post(self, request, *args, **kwargs):
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
模板:
{% extends 'base.html' %}
{% block content %}
<ul>
<h1>Detail page:</h1>
<li>{{ object.title }}</li>
<li>{{ object.text }}</li>
<li>{{ object.date }}</li>
</ul>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endblock content %}
按下提交按钮后,我在注册模型中没有任何项目。
答案 0 :(得分:0)
FormMixin上的form_valid
的默认定义只是重定向到成功URL。这是因为它对模型一无所知,因此不希望在表单上使用.save()
方法。
您应该使用ModelFormMixin。