Как я могу скопировать текущую строку модели в другую в Django? - PullRequest
0 голосов
/ 25 апреля 2020

После создания блога у меня есть две кнопки отправки: одна для публикации статьи в моем профиле, которую только я вижу, и другая для публикации на домашней странице, а также в моем профиле, где все пользователи могут видеть, но я могу не могу понять, как заставить вторую кнопку отправки работать правильно

#Model MyLane in mylane/models.py
class MyLane(models.Model):
    id = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=25)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
​
    def __str__(self):
        return self.title
​
    def get_absolute_url(self):
        return reverse('my-lane')

# Model Home in home/models.py
class Home(models.Model):
    title = models.ForeignKey(MyLane, on_delete=models.CASCADE)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
​
    def __str__(self):
        return self.title
​

​
#Createview in mylane/views.py
class MyLaneCreateView(LoginRequiredMixin, CreateView):
    model = MyLane
    fields = ['title', 'content']
​
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)
​
    def get_success_url(self):
        if 'homepost' in self.request.POST:
            mylane = MyLane.objects.get("??")
            home = Home(title=mylane.title, content=mylane.content, author=self.request.user)
            home.save()
            url = reverse('home')
        else:
            url = reverse('my-lane')
        return url

1 Ответ

0 голосов
/ 25 апреля 2020

Посмотрите на django сигналы, особенно post_save, которые позволяют вам делать именно то, что вы хотите.

https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html

https://docs.djangoproject.com/en/3.0/ref/signals/#post -save

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...