سلام ببخشید استاد من امروز دومین باره دارم سوال میپرسم
استاد من به یه اروری برخوردم که هرچقد به کدا نگا کردم دستاریشون کردم نتونستم درستش کنم ممنون میشم شماهم یه نگاهی بندازین
وقتی که کدایه مربود به group related رو برمیدارم مشکل حل میشه
views
def product_detail(request, *args, **kwargs):
selected_game_id = kwargs['gameId']
product_name = kwargs['name']
games = game.objects.get_by_id(selected_game_id)
if games is None or not games.active:
raise Http404('محصول مورد نظر یافت نشد')
related_game = game.objects.get_queryset().filter(categories__game=game).distinct()
galleries = GameGallery.objects.filter(game_id=selected_game_id)
link = DownloadGame.objects.filter(game_id=selected_game_id)
grouped_related_game = my_grouper(3, related_game)
context = {
'games': games,
'galleries': galleries,
'link': link,
'grouped_related_game': grouped_related_game,
}
return render(request, 'products/product_detail_game.html', context)
models
class GameManager(models.Manager):
def get_active_products(self):
return self.get_queryset().filter(active=True)
def get_products_by_category(self, category_name):
return self.get_queryset().filter(categories__name__iexact=category_name, active=True)
def get_by_id(self, game_id):
qs = self.get_queryset().filter(id=game_id)
if qs.count() == 1:
return qs.first()
else:
return None
class game(models.Model):
title = models.CharField(max_length=150, verbose_name='عنوان')
developer_game = models.CharField(max_length=150, null=True, verbose_name='سازنده', blank=True)
size_game = models.CharField(max_length=150, null=True, verbose_name='حجم', blank=True)
of_on = models.CharField(max_length=150, null=True, verbose_name='آفلاین/آنلاین', blank=True)
category = models.CharField(max_length=150, null=True, verbose_name='دسته بندی', blank=True)
text_h1 = models.CharField(max_length=150, null=True, verbose_name='متن بزرگ 1', blank=True)
text_h2 = models.CharField(max_length=150, null=True, verbose_name='متن بزرگ 2', blank=True)
description_1 = models.TextField(verbose_name='توضیحات 1', null=True, blank=True)
description_2 = models.TextField(verbose_name='توضیحات 2', null=True, blank=True)
image = models.ImageField(upload_to=upload_image_path, null=True, blank=True, verbose_name='تصویر')
image_1 = models.ImageField(upload_to=upload_image_path, null=True, blank=True, verbose_name='تصویر 1')
active = models.BooleanField(default=False, verbose_name='فعال / غیرفعال')
categories = models.ManyToManyField(GameCategory, blank=True, verbose_name="دسته بندی ها")
objects = GameManager()
urls
urlpatterns = [
path('game/', ProductsListGame.as_view()),
path('game/search', SearchProductsView.as_view()),
path('game/<gameId>/<name>', product_detail),
path('game/<category_name>', GameListByCategory.as_view()),
path('products_categories_partial_game', products_categories_partial_game, name='products_categories_partial_game')
]
templte
{% for group in grouped_related_game %}
{% for game in games %}
<div class="slide">
<div class="panel panel-default" style="margin:0;padding-left: 40px">
<img src="{% static 'images/5.jpg' %}" class="img-responsive imgfluid"/>
<div class="panel-body" style="margin: 0">
<h4 style="margin:0;padding-top: 10px">clash of clans</h4>
<button class="btn btn-info1 btn-cs button-cs">
<svg style="margin-left: 10px;padding-right: 0"
xmlns="http://www.w3.org/2000/svg"
width="16" height="16" fill="currentColor"
class="bi bi-download" viewBox="0 0 16 16">
<path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z"/>
<path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z"/>
</svg>
دانلود
</button>
+3
<span class="fa fa-star checked"></span>
<span class="fa fa-star checked"></span>
<span class="fa fa-star checked"></span>
<span class="fa fa-star"></span>
<span class="fa fa-star"></span>
</div>
</div>
</div>
{% endfor %}
{% endfor %}
البته هنوز تمپلیتو کامل نکردم ولی فک نمیکنم ازین باشه
سلام داخل ویو ها
get_queryset()
رو بردارین
تغییر بدید
categories__game=game.categoreies
نیست برعکسه یعنی با توجه به مدلت بازی شما شما که ری لیشن چند به چند زدین به GameCategory شما باید این طوری فیلتر کنید
game__categories=game.categoreies
اول اسم مدل بعد اسم فیلد
اما در صورتی که مدل های دیگه ای دارید لطفا عکس اون ها رو هم بزارین چون از این مدل و این کد ها همین برداشت میشه
{% for group in grouped_related_game %}
{% for game in group %}
حلقه هم این طوری باشه
البته اگه حلقه دیگری هست من حرفی ندارم
داش انجام دادم درست نشد
views
def product_detail(request, *args, **kwargs):
selected_game_id = kwargs['gameId']
product_name = kwargs['name']
games = game.objects.get_by_id(selected_game_id)
if games is None or not games.active:
raise Http404('محصول مورد نظر یافت نشد')
related_game = game.objects.filter(game__categories=game.categories).distinct()
galleries = GameGallery.objects.filter(game_id=selected_game_id)
link = DownloadGame.objects.filter(game_id=selected_game_id)
grouped_related_game = my_grouper(3, related_game)
context = {
'games': games,
'galleries': galleries,
'link': link,
'grouped_related_game': grouped_related_game,
}
return render(request, 'products/product_detail_game.html', context)
سلام شما بیزحمت مدل کتگوری و گیم رو بفرست
چون ارور عوض شده عرض می کنم
class GameCategory(models.Model):
title = models.CharField(max_length=150, verbose_name='عنوان')
name = models.CharField(max_length=150, verbose_name='عنوان در URL',null=True,blank=True)
class Meta:
verbose_name = 'تگ'
verbose_name_plural = 'تگ بازی ها'
def __str__(self):
return self.title
بفرما داش بالاهم گیمو فرستادم قبلا
games = game.objects.get_by_id(selected_game_id)
درسته من غلط تایپی دارم شما درستش کن دیگه شما بازی رو ریختی توی متغییر
games
بعد اینجا
related_game = game.objects.filter(game__categories=game.categories).distinct()
از game داریم دسته بندی می گیریم
که باید بشه games
related_game = game.objects.filter(game__categories=games.categories).distinct()
شما این رو بزنید بببینم چه اروری میگیره بعدش اونو بفرستید
داش اینی که گفتیو زدم
related_game = game.objects.filter(game__categories=games.categories).distinct()
بعد این ارورو داد
دوستان کسی نمیتونه حل کنه؟
داش رفتم یو ار ال اصلیو عوض کردم الان جفت یو ار ال ها اینجوری شدن و بازم عینه همون ارورو میده
urls asli
urlpatterns = [
path('admin/', admin.site.urls),
path('game/', include('site_products.urls')),
path('', include('site_products_app.urls')),
path('', home_page),
]
urls game
urlpatterns = [
path('', ProductsListGame.as_view()),
path('search', SearchProductsView.as_view()),
path('<gameId>/<name>', product_detail),
path('<category_name>', GameListByCategory.as_view()),
path('products_categories_partial_game', products_categories_partial_game, name='products_categories_partial_game')
]
من این رو ار ال گیمو الان یکم تغییرش دادن چون تو یو ار ال اصلی نگا کنی پچ اپ رو عینه اون خالی بود جایه اسمش سره همین تو یو ار ال گیم هرچی اسلش گیم پشتش بودو برداشتم داش بازم میگم وقتی داخل پروداکت گیم related_game و grouped_related_game رو برمیدارم مشکل حل میشه ولی اینا میان ارور میده
این تیکه کد رو بردار
game__
از
related_game = game.objects.filter(game__categories=game.categories).distinct()
داش برداشتم این ارورو داد
اول از همه
path('<gameId>/<name>', product_detail),
بشه
path('<int:gameId>/<slug:name>', product_detail),
داخل مدل slug تعریف کن نمایش متن توی یو ار ال وظیفه اونه
class game(models.Model):
title = models.CharField(max_length=150, verbose_name='عنوان')
.
.
.
slug = models.SlugField(unique=True, max_length=100, verbose_name="آدرس دسته بندی")
این فیلد مخصوصا یکی از کاربرداش متن توی url رو شامل میشه
دیگه خدمتت عرض کنم
فعلا همین کارا رو انجام بده ببینم اررور چی میده
شما تمپپلت list view رو هم برا من بی زحمت بفرست
داش نمیدونم چرا اصلا نمیزاره من اینو migrate کنمش
یه راهش اینه
یه مقدار default
برای slug ست کن فرق نداره چی
اگه نشد راه بعدیش اینه
برو تو پوشه migrations
همه فایلا به جز
init__.py__
رو بپاک میک کایگریشن و مایگریت کن
احتمال زیاد بع همون گیر داده مایگریشن هاش قاطی شدن
داش دیفالت تعیین کردم درست نشد و اون کاریم که گفتیو کردم یه ارور دیگه داد اگه اشتباه پاک کردم بگو با کنترل زد دوباره برگردونم
makemigrations
بزنی این ارور رومیده؟
اره
فایلا رو که برگردون
slug
رو هم بردارش
ببین داش روشت اشتباه که نمیاره
این عبارت رو گوگل کن سه تاا فیلم از یوتیوبه یه نگاه بنداز طرف ببین چطوری ریلیتد میاره آدم حال میاد
show related products with django
داش رفتم هر سه تا فیلمو دیدم با روش هر کدومم رفتم به یه مدل ارور خوردم که هرچقد زور میزنم کدارو جابجا میکنم به فیلم نگاه میکنم ارورا درست نمیشن یا فیکس میشن یه ارور دیگه بجاش میاد
این کلیپ سوم
views
related_game = games.objects.values('categories', 'id')
کلیپ دوم
related_game = games.categories.name.filter(parent=None).exclude(id=selected_game_id.id)
کلیپ اول
views
related_game = game.objects.filter(categories=games.categories).exclude(id=selected_game_id.id)[:4]
عکس ارورایه کلیپ اول و دوم و سوم
بعدم داش اون روشی که اولش زده بودم گفتی مشکل داره اون روش خوده استاد بود که تو کلیپم کار کرد منم عینشو نوشتم نمیدونم چرا ارور داده
داش دیگه واقعا خسته شدم از ضب واسه یه ارور دارم زجه میزنم
اگه شماره استادو کسی داره ممنون میشم زنگش بزنه بیاد یه نگاهی بندازه
عیب نداره قصه نخور یک هفته اخیر روی یه ارور خودم مونده بودم
فعلا بیخیالش شومغزت رو استراحت بده فر دا بشین سرچش کن
تا جایی که فهمیدم مشکل از اون name که شما میفرستی فقط با ای دی خالی یه تست کن
حله داش
استاد اگه دیدی ممنون میشم یه نگاهی به ارور بندازی هنوز مشکل حل نشده