Я пытаюсь создать поле формы оценки, используя код jquery here До сих пор я работаю нормально, но мне нужно сделать, это передать URL-адрес на основе объекта, который я пытаясь оценить. См. Строку $.post("URL TO GO HERE", {rating: value}, function(db)
- это код ниже. URL-адрес будет примерно /rating/object_id
, где object_id будет pk объекта, который я хочу оценить. Каков наилучший способ передать идентификатор объекта, чтобы я мог его использовать. Должен ли я сначала передать его в RatingField, а затем передать его оттуда в StarWidget?Django - передать объект в пользовательское поле формы
class StarWidget(widgets.Select):
"""
widget to show stars which the user can click on to rate
"""
class Media:
css = {
'all': ('css/ui.stars.css',)
}
js = ('js/ui.stars.js',)
def render(self, name, value, attrs=None):
output = super(StarWidget, self).render(name, value, attrs)
jquery = u"""
<div id="stars-rating" class="rating_section">
%s
<span id="caption"></span>
</div>
<script type="text/javascript">
$(function(){
$("#stars-rating").stars({
inputType: "select",
captionEl: $("#caption"),
cancelShow: false,
callback: function(ui, type, value)
{
// Hide Stars while AJAX connection is active
$("#stars-rating").hide();
$("#loader").show();
$.post("URL TO GO HERE", {rating: value}, function(db)
{
$("#loader").hide();
$("#stars-rating").show();
}, "json");
}
});
});
</script>
""" % (output)
return mark_safe(jquery)
class RatingField(forms.ChoiceField):
"""
rating field. changes the widget and sets the choices based on the model
"""
widget = StarWidget
def __init__(self, *args, **kwargs):
super(RatingField, self).__init__(*args, **kwargs)
self.label = "Rating:"
self.initial = 3
self.choices = Rating.RATING_CHOICES
Спасибо за ответ. Можете ли вы привести мне пример того, как это сделать? – John 2010-12-06 13:46:32