Django2.1
我想创建一个按钮,该按钮将在用户过去保存数据时显示。 我以为可以用{%if object%}来完成,但这似乎有所不同。
这是失败的代码。
{% if user.is_authenticated %}
{% if object %}
<a class="btn" href="{% url 'detail' user.id %}">Check</a>
{% else %}
<a class="btn" href="{% url 'create' %}">Create</a>
{% endif %}
{% else %}
#models.py
class Mymodel(models.Model):
user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)
title = models.CharField(max_length=20)
content = models.TextField(max_length=5000)
posted_date = models.DateTimeField(auto_now=True)
我将在CreateView中创建数据。
class MyCreateView(LoginRequiredMixin, CreateView):
model = Mymodel
form_class = MyForm
def form_valid(self, form):
obj = form.save(commit=False)
obj.user = self.request.user
return super(MyCreateView, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('detail', kwargs={"pk": self.object.pk})
感谢您阅读本书直到最后。
答案 0 :(得分:0)
我认为应该是这样的:
{% if user.is_authenticated %}
{% if user.mymodel %}
<a class="btn" href="{% url 'detail' user.id %}">Check</a>
{% else %}
<a class="btn" href="{% url 'create' %}">Create</a>
{% endif %}
{% else %}
由于Mymodel
和User
具有OneToOne关系,因此您可以使用以下方法获取Mymodel
值:
user.mymodel # class name all lower case
还可以使用以下方法从我的模型中获取用户数据:
mymodel = Mymodel.objects.get(id=1)
mymodel.user