Если вы пытаетесь выяснить, как настроить файл models.py, посетите документацию по django и посмотрите написание своего первого приложения (https://docs.djangoproject.com/en/dev/intro/tutorial01/). От начала до конца написано ваше первое приложение, и вы узнаете, каксистема работает.
Если вы хотите больше деталей для парадигмы вашего случая, вот что я хотел бы сделать. Я бы, вероятно, обработал это в представлении / шаблоне и отправил / отредактировал бы обзор с помощью обращений Dajaxice к базе данных.Если рецензия текущего пользователя существует, он покажет данные, если это не так, то это будет пустая запись, которая будет использовать Dajax для отправки контента. В методе python, который вызывает Dajax, вы попытаетесь найтиобзор, и если он существует при попытке добавить новый, что-то пошло не так, и вы можете обработать ошибку, в противном случае она сохраняется на всеобщее обозрение.
Например, в models.py:
class User(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Review(models.Model):
title = models.CharField(max_length=64)
message = models.TextField()
topic = models.ForeignKey(Topic)
user = models.ForeignKey(User)
def __unicode__(self):
return self.title
class Topic
title = models.CharField(max_length=64)
message = models.TextField()
user = models.ForeignKey()
def __unicode__(self):
return self.title
в views.py:
class Post(models.Model): # This is defined a model, but not part of the data layer, it really is view code.
topic = None
your_review = None
other_reviews = None
def __unicode__(self):
return ''
def GetDetails(request):
posts = () # to be returned to and looped by the Template.
topics = Topic.objects.all().order_by('-posting_date') # posting_date descending.
for t in topics:
post = Post()
post.topic = t
post.your_review = Review.objects.filter(topic__id=t.id, user__id=<current_user_id>)
post.other_reviews = Review.objects.filter(topic__id=t.id, ~Q(user__id=<current_user_id>)
# Append to the posts array.
posts.append(post)
return render_to_response('index.htm', {'posts': posts}, context_instance=RequestContext(request))
в вашем index.htm:
{% if posts %}
{% for p in posts %}
<div>
<div class="title">{{ p.topic.title }}</div>
<div class="message">{{ p.topic.message }}</div>
<div class="other_reviews">
{% if p.other_reviews %}
{% for r in p.other_reviews %}
<div class="review_title">{{ r.title }}</div>
<div class="review_message">{{ r.message }}</div>
{% endfor %}
{% endif %}
<div>
<input type="text" value="{% if p.your_review %}{{ p.your_review.title }}{% endif %}">
</div>
<div>
<textarea>{% if p.your_review %}{{ p.your_review.message }}{% endif %}</textarea>
</div>
</div>
</div>
{% endfor %}
{% endif %}