Browse Source
feat(hadis): add Country and Publisher relational models, migrations, and admin APIs
feat(hadis): add Country and Publisher relational models, migrations, and admin APIs
- Add Country model for transmitters and reference publishers - Add Publisher model linked to Country and City - Add migration 0065 for Country and Publisher models - Expose AdminCountrySerializer, AdminPublisherSerializer, and respective viewsets in admin URLsmaster
6 changed files with 277 additions and 5 deletions
-
61apps/hadis/migrations/0065_country_and_publisher_models.py
-
65apps/hadis/models/reference.py
-
41apps/hadis/models/transmitter.py
-
55apps/hadis/serializers/serializers_admin.py
-
6apps/hadis/urls.py
-
54apps/hadis/views_admin.py
@ -0,0 +1,61 @@ |
|||||
|
# Generated by Django 4.2.30 on 2026-10-21 10:38 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('hadis', '0064_transmitter_profession_and_relations'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.CreateModel( |
||||
|
name='Country', |
||||
|
fields=[ |
||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('title', models.JSONField(default=list, verbose_name='Title')), |
||||
|
('slug', models.SlugField(allow_unicode=True, blank=True, max_length=255, null=True, verbose_name='slug')), |
||||
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')), |
||||
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Country', |
||||
|
'verbose_name_plural': 'Countries', |
||||
|
'ordering': ('-created_at', '-id'), |
||||
|
}, |
||||
|
), |
||||
|
migrations.CreateModel( |
||||
|
name='BookPublisher', |
||||
|
fields=[ |
||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
|
('title', models.JSONField(default=list, verbose_name='Title')), |
||||
|
('slug', models.SlugField(allow_unicode=True, blank=True, max_length=255, null=True, verbose_name='slug')), |
||||
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')), |
||||
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='updated at')), |
||||
|
('city', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publishers', to='hadis.city', verbose_name='City')), |
||||
|
('country', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publishers', to='hadis.country', verbose_name='Country')), |
||||
|
], |
||||
|
options={ |
||||
|
'verbose_name': 'Book Publisher', |
||||
|
'verbose_name_plural': 'Book Publishers', |
||||
|
'ordering': ('-created_at', '-id'), |
||||
|
}, |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='bookedition', |
||||
|
name='country_of_publication_country', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publication_editions', to='hadis.country', verbose_name='Country of Publication (Country)'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='bookedition', |
||||
|
name='publisher_item', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='editions', to='hadis.bookpublisher', verbose_name='Publisher Entity'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='city', |
||||
|
name='country', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cities', to='hadis.country', verbose_name='Country'), |
||||
|
), |
||||
|
] |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue