我正在嘗試爲學習目的構建一種新聞網站。幫助概念和數據庫查詢問題(Django/Python)
class NewsCategory(models.Model):
category = models.CharField(max_length=50)
注:一個類別可以是足球,網球,商業......用戶可以註冊到不同的新聞類別。這一選擇將保存在他們的偏好中。
class Profile(models.Model):
user = models.ForeignKey(User, unique=True)
gender = models.CharField(max_length=1,blank=True)
preference = models.ManyToManyField(NewsCategory)
我目前停留在如何更新每個用戶的喜好列表
觀點(即指定哪些類別,他感興趣的列表。):
category = [(item.category) for item in NewsCategory.objects.all()]
然後我將category
發送到以下模板
templa TE:
<div id="c_b">
{% for c in category %}
<input type="checkbox" name="category[]" value="{{c}}">
<label for="{{c}}">{{c}}</label>
{% endfor %}
</div>
的問題:那些已經保存在用戶的喜好,當我顯示模板複選框
什麼是添加檢查的標籤的最佳途徑下一步。
我雖然讓所有用戶都註冊喜好的:
saved_preference = user.preference.all()
,然後在category
檢查每個項目,如果它是在saved_preference
我也是在路上消隱實際編寫成代碼,和無論這是應該在視圖還是模板中完成。
什麼是更新用戶偏好列表的好方法?
我打算運行
user.preference.clear()
然後通過每個項目在提交的表單會運行user.preference.add(the_new_preference)
我認爲這非常解決了我的第一個問題! quick html澄清:在標籤中,你的意思是寫'for =「id _ {{c.category}}'而不是'for =」id _ {{c.id}}「'你認爲這是一個好方法要清除列表,然後在每次提交表單時都更新它?我建議這樣做,因爲我不認爲有一個直接的方法可以知道用戶是否刪除/添加了一個首選項(或兩者兼有)。 – 2011-04-12 13:34:33
對不起,錯字。這就是我的意思,是的,重新更新偏好設置,我會在我的答案中添加更新。 – 2011-04-12 13:40:23