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

View file

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