Added new fields for wireless headphones

This commit is contained in:
apheyhys 2025-05-06 21:59:20 +03:00
parent 2a83135234
commit 967da2ba42
2 changed files with 44 additions and 6 deletions

View file

@ -59,16 +59,18 @@ class WiredHeadphonesInline(admin.StackedInline):
]
class WirelessHeadphonesInline(admin.StackedInline):
model = WirelessHeadphones
extra = 0
fieldsets = [
(None, {
'fields': [
('wireless_technology', 'bluetooth_version'),
('wireless_technology', 'bluetooth_version', 'chip'),
('battery_life', 'charging_time'),
('has_charging_case', 'charging_case_battery_life', 'charging_case_time'),
'charging_interface',
('has_charging_case', 'charging_case_battery_life'),
'supported_codecs'
]
})
@ -222,7 +224,7 @@ class HeadphonesAdmin(admin.ModelAdmin):
'fields': [
('date_added', 'published')
],
'classes': ('collapse',)
# 'classes': ('collapse',)
}),
]
@ -432,6 +434,12 @@ class WirelessTechnologyAdmin(admin.ModelAdmin):
search_fields = ('name', 'description')
@admin.register(WirelessHeadphonesChip)
class WWirelessHeadphonesChipAdmin(admin.ModelAdmin):
list_display = ('name',)
search_fields = ('name', 'description')
@admin.register(ChargingInterface)
class ChargingInterfaceAdmin(admin.ModelAdmin):
list_display = ('name',)

View file

@ -750,7 +750,7 @@ class Headphones(models.Model):
# blank=True,
# verbose_name="Доступные цвета"
# )
weight = models.PositiveSmallIntegerField(
weight = models.FloatField(
verbose_name="Вес (г)",
null=True,
blank=True
@ -877,6 +877,18 @@ class WiredHeadphones(models.Model):
return f"Проводные характеристики для {self.headphones.model}"
class WirelessHeadphonesChip(models.Model):
name = models.CharField(max_length=50, verbose_name="Название")
description = models.TextField(blank=True, verbose_name="Описание")
class Meta:
verbose_name = "Используемый чип"
def __str__(self):
return self.name
class WirelessHeadphones(models.Model):
headphones = models.OneToOneField(
Headphones,
@ -896,12 +908,16 @@ class WirelessHeadphones(models.Model):
verbose_name="Версия Bluetooth"
)
battery_life = models.IntegerField(
blank=True,
null=True,
verbose_name="Время работы (ч)",
help_text="Время работы от батареи в часах"
)
charging_time = models.IntegerField(
verbose_name="Время зарядки (мин)",
help_text="Время зарядки в минутах"
blank=True,
null=True,
verbose_name="Время зарядки наушников (мин)",
help_text="Время зарядки наушников в минутах"
)
has_charging_case = models.BooleanField(
default=False,
@ -913,11 +929,25 @@ class WirelessHeadphones(models.Model):
verbose_name="Время работы с кейсом (ч)",
help_text="Общее время работы с кейсом в часах"
)
charging_case_time = models.IntegerField(
blank=True,
null=True,
verbose_name="Время зарядки кейса (мин)",
help_text="Время зарядки кейса в минутах"
)
charging_interface = models.ForeignKey(
ChargingInterface,
on_delete=models.PROTECT,
verbose_name="Интерфейс зарядки"
)
chip = models.ForeignKey(
WirelessHeadphonesChip,
blank=True,
null=True,
on_delete=models.PROTECT,
verbose_name="Чип, используемый в наушниках"
)
supported_codecs = models.ManyToManyField(
AudioCodec,
blank=True,