Найти - Пользователи
Полная версия: Проблемы с сохранением
Начало » Django » Проблемы с сохранением
1
tty
Есть модель

class Tag(models.Model):
tag = models.CharField(max_length=255, core=True, help_text=“Tag cloud”)

class Admin:
pass

def __unicode__(self):
return self.tag

def get_absolute_url(self):
return ‘/blog/tag/%s/’ % (slugify(self.tag))

class Page(models.Model):
title = models.SlugField(unique = True, max_length = 100)
slug = models.SlugField(max_length = 100, unique = True)
user = models.ForeignKey(User)
tags = models.ManyToManyField(Tag, blank=True)

def save (self):
if not self.slug:
self.slug = ‘-’.join(self.title.split())
try:
Page.objects.get(slug = self.slug)
except ObjectDoesNotExist, e:
pass
super(Page, self).save() # Call the “real” save() method

def get_tags(self):
return self.tags.all()

def get_absolute_url (self):
return ‘/blog/page/%s/’ % self.slug

def get_edit_url (self):
return ‘/blog/edit/%s/’ % self.slug

def __str__ (self):
return self.title

class Admin:
pass


Есть форма при попытки сохранения через которую выдается ошибка вида “'tags' is an invalid keyword argument for this function”

class CreatePage(forms.Form):
title = forms.CharField()
edit_summary = forms.CharField()
tags = forms.CharField()

def save(self, user):
page = models.Page(title = self.cleaned_data, edit_summary = self.cleaned_data, tags = self.cleaned_data, user = user)
page.save()
return page

class EditPage(forms.Form):
title = forms.CharField()
edit_summary = forms.CharField()
tags = forms.CharField()

def __init__(self, page_ = None, *args, **kwargs):
super(forms.Form, self).__init__(*args, **kwargs)
if not page_ is None:
self.fields.initial = page_.title
self.fields.initial = page_.edit_summary
self.fields.initial = page_.tags

def save (self, slug, user):
page = models.Page.objects.get(slug = slug)
page.title = self.cleaned_data
page.slug = ‘-’.join(page.title.split())
page.edit_summary = self.cleaned_data
page.tags = self.cleaned_data
page.user = user
page.save()
return page



Как мне решить эту проблему?
playpauseandstop
http://www.djangoproject.com/documentation/models/m2m_multiple/
tty
Чуток поправил форму. Теперь она выглядит так

class CreatePage(forms.Form):
title = forms.CharField()
edit_summary = forms.CharField()
tags = forms.CharField()

def save(self, user):
page = models.Page(title = self.cleaned_data, edit_summary = self.cleaned_data, user = user)
page.save()
tags = self.clreaned_data.split(' ')
for t in tags:
tag_new = models.Tag(tag=t)
page.tags.add(tag_new)
tag_new.save()
return page

При проходе в цикле по тегам на 2 итерации вылетает с ошибкой. Как мне теперь это поправить?
Ferroman
Отладкой.
tty
Вылетает на конструкции tag_new.save(). Скажите что тут не так?
Ferroman
Так трудно сказать. С каким ексепшином вылетает?
А вообще, мне конструкция
tag_new = models.Tag(tag=t)
tag_new.save()
Не нравится. Вы вроде как модель присваиваете tag_new, а нужно - просто объект Tag.
Может это имелось в виду?
from mysite.blog.models import Tag
....
tag_new, created = Tag.objects.get_or_create(tag=t)
page.tags.add(tag_new)
tag_new- будет или новый объект (уже сохранённый) или старый из базы, если такой есть.
created - будет True если создан новый объект или False - если взят существующий.
Почитать больше о get_or_create

PS: Наверно, нужно приводить теги к одному виду, а то в зависимости от регистра они будут считаться разными (просто сделайте lower(), после получения или перед сохранением тега, ну или что-то типа того )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB