С помощью Ваших советов я не теряю веры, что стану джанго-гуру :)
Но я упорно не понимаю такую вещь.
Вот например модель:
class Image(models.Model):
image_author = models.ForeignKey(User)
image_title = models.CharField(max_length=30)
image_description = models.TextField(blank=True)
image_pubdate = models.DateTimeField(auto_now_add=True)
image_source = models.ImageField(upload_to='images/')
image_tags = models.ManyToManyField(Tag,blank=True)
def __unicode__(self):
return '%s (%s)' % (self.image_title, self.image_author)
def save(self):
#Вот здесь!
#--------------------------
try:
author = User.objects.get(username=self.cleaned_data["author"])
except User.DoesNotExist:
return
#----------------------------
title = self.cleaned_data["title"]
describe = self.cleaned_data["describe"]
firstfile = self.cleaned_data["firstfile"]
from RandomQuote.quotes.models import Image
image = Image(image_author=author,
image_title=title,
image_description=describe,
image_source = firstfile
)
image.save()
image.image_tags = self.cleaned_data["tags"]
image.save()
Я не понимаю как эти таблицы связываются?
Если выполнить в шелле, например:
>>> author = User.objects.get(username='root')
получается: image_author = root
Но ведь первичный ключ в таблице auth_user Django это id, а получается мы связываем таблицы по полю username таблицы auth_user?
У меня снова возникла проблема при вставке информации в модель комментариев :(
Никак не могу понять как связываются таблицы, по какому полю?
Есть модель:
class Comment(models.Model):
comment_author = models.ForeignKey(User)
comment_image = models.ForeignKey(Image)
comment_title = models.CharField(max_length=50)
comment_pubdate = models.DateTimeField(auto_now_add=True)
comment_text = models.TextField()
def __unicode__(self):
return '%s (%s)' % (self.comment_title, self.comment_author)
<form action="comments/" method="POST">
{% csrf_token %}
<input type="hidden" name="authorr" value="{{ user.username }}">
<TABLE cellpadding="0" cellspacing="0" border="0" style="border-width:1px; border-spacing: 2px;
border-style: none; border-color: green; border-collapse: collapse;background-color: white;">
<TR><TD><label for="id_messagename">Название:</label></TD><TD><input type="text" size=20 name="messagename" id="id_messagename" /></TD></TR>
<TR><TD><label for="id_message">Сообщение:</label></TD><TD><textarea rows="10" cols="20" name="message" id="id_message"></textarea> </TD></TR>
<TR><TD colspan="2" align="right"><input type="submit" value="Отправить!"/></TD></TR>
</TABLE>
<input type="hidden" name="picturenumber" value="{{ images.id }}">
</form>
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from RandomQuote.comments.forms import CommentsForm
def addComments(request):
if request.method == 'POST':
form = CommentsForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
else:
return HttpResponseRedirect('/')
else:
return HttpResponseRedirect('/')
from django import forms
from RandomQuote.quotes.models import Image
from django.contrib.auth.models import User
class CommentsForm(forms.Form):
author = forms.CharField()
image = forms.CharField()
title = forms.CharField()
text = forms.CharField()
def save(self):
try:
author = User.objects.get(username=self.cleaned_data["authorr"])
except User.DoesNotExist:
return
try:
image = Image.objects.get(pk=self.cleaned_data["picturenumber"])
except Image.DoesNotExist:
return
#image = self.cleaned_data["picturenumber"]
title = self.cleaned_data["messagename"]
text = self.cleaned_data["message"]
from RandomQuote.quotes.models import Comment
Comment(comment_author=author,
comment_image=image,
comment_title=title,
comment_text = text
).save()
try:
image = Image.objects.get(pk=self.cleaned_data["picturenumber"])
except Image.DoesNotExist:
return
<input type="hidden" name="picturenumber" value="{{ images.id }}">