Я пытаюсь использовать CreateView, вот какая-то проблема, и я ее укладываю.
enter code here
Прежде всего, я пытаюсь создать пост и динамически заполнять поле пользователя, который создает пост.Это сохраняет сообщение, но не сохраняет пользователя:
Изображение от администратора
#views.py
class PostCreateView(CreateView):
model = Post
template_name = 'blog/post_create.html'
fields = ('title', 'slug', 'body',)
def form_valid(self, form):
form.instance.blog__user = self.request.user
return super(PostCreateView,self).form_valid(form)
#models.py
Второй, ядумаю, что основная проблема, я не использую get_absolute_url правильно, и я получаю эту проблему:
Нет URL для перенаправления на.
Но это хорошо работает для post_detail.
class Blog(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
slug = models.SlugField(max_length=50)
def __str__(self):
return self.user.username
def create_blog(sender, **kwargs):
if kwargs['created']:
user_blog = Blog.objects.create(user=kwargs['instance'], slug=kwargs['instance'])
post_save.connect(create_blog, sender=User)
class Post(models.Model):
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
slug = models.SlugField(max_length=50, db_index=True)
title = models.CharField(max_length=120, db_index=True)
body = models.TextField(blank=True, db_index=True)
pub_date = models.DateTimeField(auto_now_add=True)
def get_absolute_url(self):
return reverse('post_detail_url', kwargs={'slug': self.slug,
'username': self.blog})
#urls.py
urlpatterns = [
path('<username>/create/', PostCreateView.as_view(), name='post_create'),
path('<username>/<str:slug>/', PostDetailView.as_view(), name='post_detail_url'),
path('<username>/', PostListView.as_view(), name='post_list_url'),
path('<username>/<str:slug>/update/', PostUpdateView.as_view(), name='post_update'),
]
Я пытаюсь определить get_success_url, и я получаю это: NoReverseMatch
Пожалуйста, помогите Я действительно потерян воблака!