Работа над этим 7 командным веб-приложением Восхождение , что помогает сделать повседневные задачи в Базовый лагерь быстрее и проще.
Моя команда : Shoutouts, мы отвечаем за тем, как студенты могут быть кричать другими студентами. У каждого студента есть собственные страницы Shoutouts со всеми их криками. Shotout можно понравиться и закреплена в каждой странице студентов Shocouts.
Я собираюсь пойти за опоздание криката.
Models.py
- Это модель для закрепленного криката. Это OneToonefield убедится, что может быть только один Poinnedshoutout за Пользователь а также один Poinnedshoutout за Shoutout Отказ
class PinnedShoutout(models.Model): user = models.OneToOneField(User, on_delete=models.PROTECT) shoutout = models.OneToOneField(Shoutout, on_delete=models.PROTECT)
Urls.py
- Первым аргументом этого URL является путь, второй аргумент будет использоваться названием точки зрения, с которым оно соответствует, а третий аргумент – это все равно что дать, чтобы показать другое имя, которое будет называться.
app_name = "shoutouts" urlpatterns = [ path("pinned/", PinShoutout.as_view(), name="pinned") ]
Views.py
- Если этот взгляд вызывается (закреплен нанятие), он получает эти детали, перенаправляющие на другой вид, в противном случае его создается крик. Тогда, если навязку уже закреплена уже, это отключает их, удаляя предыдущий крик и закрепление нового.
class PinShoutout(View): def post(self, request, shoutout_id): user = request.user shoutout = get_object_or_404( Shoutout, pk=shoutout_id).select_related('shoutout') if not hasattr(request.user, "pinnedshoutout"): new_pinned = PinnedShoutout.objects.create( user=user, shoutout=shoutout) else: request.user.pinnedshoutout.shoutout = shoutout request.user.pinnedshoutout.save() return redirect("shoutouts:individual_shoutouts", recipient_id=user.id)
Оригинал: “https://dev.to/christianguzman/pinning-a-shoutout-8ll”