我試圖在基於模型的Django中創建表單。此表格必須包含基本上2個信息:有關所審閱產品的評論文本和標籤。 由於用戶界面的改進,數據庫中已有的標籤應顯示在窗體中,以幫助用戶作爲複選框。但是,如果他想要包含不在此列表中的另一個標籤,則可能。新標籤的字段是一個文本字段(插入的每個新標籤都用逗號分隔,我使用taggit來管理標籤)。的呈現標籤的數目是正在審查其通過產物而變化的隨機元素,但最小值爲0,最大值爲10。自定義表單中的字段
這是審查模型:
class Review(models.Model):
user = models.ForeignKey(User, related_name="user_blog")
tag = TaggableManager()
product = models.ForeignKey(Product)
review_text = models.TextField()
created = models.DateTimeField(auto_now=True, auto_now_add=False)
updated = models.DateTimeField(auto_now=True, auto_now_add=True)
hashtag = models.ForeignKey(Hashtag)
def __unicode__(self):
return u'%s' % self.review_text
def getTags(prodid):
return Review.objects.filter(product=prodid)
這是形式I創建:
<form class="form-inline">
<strong><h3>Revise este produto</h3></strong><br>
{% for tag in tags %}
<label class="checkbox">
<input type="checkbox" value=""> #Ótimo
</label>
{% endfor %}
<br/>
<p> </p>
<label>Envie outras hashtags</label> <br/>
<input type="text" class="span3" placeholder="exemplo1, exemplo2">
<br />
<p> </p>
<label>Deixe sua opinião (opcional)</label> <br/>
<textarea name="Text1" cols="80" class="span3" rows="5" placeholder="Digite sua opinião aqui"></textarea>
<br/>
<p> </p>
<button class="btn btn-primary" type="submit"><h4>Pronto!</h4></button>
</form>
我瞭解Django的形式,這聽起來讓很多容易實現的形式,但我不知道如何自定義標籤領域,如我直接在這裏做的HTML,無論怎麼改字段的標籤(因爲標籤應該是葡萄牙語,所有的服務器端都是英文的)。
我試圖實現一個forms.py,但「review_text」的標籤沒有改變,正如我之前所說的,我不知道如何顯示錶單中已經存在於數據庫中的所有標籤,然後用戶將所有選中的框組合在一起,並與新標籤字段連接並將其保存在數據庫中。
from django import forms
from django.forms import models
from models import Review
from django.utils.safestring import mark_safe
from django.forms import ModelForm
class ReviewForm(ModelForm):
class Meta:
model = Review
fields = ('review_text','tag')
review_text = forms.CharField(widget = forms.Textarea, label='teste label')
這是我爲這個頁面視圖:
def single_product(request, slug):
product = get_object_or_404(Product, slug=slug)
prod = Product.objects.get(slug=slug)
reviews = Review.objects.get(product=prod.id)
reviewmatrix = {}
i = 0
try:
for rev in reviews:
reviewmatrix[str(i)] = [[review.review_text]]
u = User.objects.get(username=rev.user)
i = i + 1
except:
u = User.objects.get(username=reviews.user)
reviewmatrix[str(i)] = [[reviews.review_text]]
if request.method=="POST":
form = responseForm(request.POST, review=review)
if form.is_valid():
response = form.save()
msg = 'Obrigado por avaliar ' + prod.name
return render(request, 'product_detail.html', {'prod':prod, 'reviews':reviews, 'user':u.first_name, 'msg':msg})
else:
form = ReviewForm()
args = {}
args.update(csrf(request))
return render(request, 'product_detail.html', {'prod':prod, 'reviews':reviews, 'user':u.first_name, 'form':form})
謝謝,但那不是我所期望的。我正在尋找一個數據結構的解決方案。如何連接我用html和forms.py構建的表單? –