Django视图和foreignkey的基本逻辑

时间:2017-09-13 11:46:02

标签: django foreign-keys

我是Django的新手并且遇到了基本问题,但却无法在线找到解决方案。

我有这些模特:

class Suggestion(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    description = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title


class Vote(models.Model):
    suggestion = models.ForeignKey(Suggestion)
    voter = models.ForeignKey('auth.User')
    vote_count = models.IntegerField(default=1)

我正在尝试创建一个视图,将Vote添加到给定的Suggestion,捕获投票的用户。我已经看到一些似乎用表格或常规功能做到这一点,所以不确定这里的最佳做法是什么?

修改

这是我的尝试(不工作)。任何帮助/建议表示赞赏。

#forms.py
class VoteForm(forms.ModelForm):

    class Meta:
        model = Vote
        fields = ()

#models.py
class Vote(models.Model):
    suggestion = models.ForeignKey(Suggestion)
    voter = models.ForeignKey('auth.User')
    vote_count = models.BooleanField()

#views.py
def add_vote(request, pk):
    if request.method == 'POST':
        form = VoteForm(request.POST)
        suggestion = get_object_or_404(Suggestion, pk=pk)
        if form.is_valid():
            vote = form.save(commit=False)
            vote.voter = request.user
            vote.vote_count = True
            vote.save()
            return render(request, 'suggestion/suggestion_detail.html', {'suggestion': suggestion})

#vote_form.html
<form method="post">
    {% csrf_token %}
    {{ form }}
    <button type="submit">Vote</button>
</form>

2 个答案:

答案 0 :(得分:1)

您应该为投票创建一个表单并将其包含在Suggestion视图中。表单可以拥有自己的html - vote_form.html。然后将其包含在带有

的建议html页面中
{% include '[name of directory]/vote_form.html' %}

对于投票计数,除非您希望用户投多票,否则它不应该是整数字段。如果您只是希望某人能够根据建议投票一次,则应将vote_count设为布尔字段(true或false)。然后你可以将true指定给一个投票,将false指定给非投票。

答案 1 :(得分:1)

我已经设法以这种方式做我想做的事情:

import requests

url = 'https://ycharts.com/companies/AAPL/events/#/?eventTypes=earnings,&pageNum=1'

page = requests.get(url)
page_content = page.content
with open('data.txt', 'w') as f: 
    f.write(page_content) 
    f.close()