django - 如何从 UserProfile Model Admin 导入用户和 UserProfile 数据?
问题描述
我有这个自定义用户模型-
class User(AbstractUser):
email = models.EmailField(unique=True)
picture = models.ImageField(upload_to='profile_picture', null=True, blank=True)
updated_on = models.DateTimeField(auto_now=True)
date_activated = models.DateTimeField(null=True, blank=True)
username = None
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
def __str__(self):
return self.email
class Meta:
verbose_name = 'User'
而这个 UserProfile 模型-
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='userprofile', on_delete=models.PROTECT, primary_key=True)
contact = models.CharField(max_length=20, blank=True, default='')
about_me = models.TextField(null=True, blank=True)
latitude = models.FloatField(validators=[MinValueValidator(-90), MaxValueValidator(90)], null=True, blank=True)
longitude = models.FloatField(validators=[MinValueValidator(-180), MaxValueValidator(180)], null=True, blank=True )
age = models.IntegerField(validators=[MinValueValidator(18), MaxValueValidator(100)], null=True, blank=True )
dob = models.DateField(null=True, blank=True,)
source_of_registration = models.ForeignKey('core.SourceOfRegistration', on_delete=models.PROTECT, null=True,blank=True )
interests = models.ManyToManyField('core.Interest')
languages = models.ManyToManyField('core.SpokenLanguage')
gender = models.ForeignKey('core.Gender', on_delete=models.PROTECT, null=True, blank=True )
country = models.ForeignKey( 'core.Country', on_delete=models.PROTECT, null=True, blank=True )
state = models.ForeignKey('core.State', on_delete=models.PROTECT, null=True, blank=True)
city = models.ForeignKey('core.City', on_delete=models.PROTECT, null=True, blank=True)
zip_code = models.CharField(max_length=12, null=True, blank=True)
is_profile_completed = models.BooleanField(default=False)
profile_completed_on = models.DateTimeField(null=True, blank=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'User Profile'
def __str__(self):
return self.user.email
def clean(self):
if self.dob:
age_in_days = (datetime.date.today() - self.dob).days
age_in_years = age_in_days / 365
if age_in_years < 18:
raise ValidationError(gettext_lazy('Age should be more or equal to 18.'))
else:
self.age = age_in_years
这是 UserProfileResource-
class UserProfileResource(resources.ModelResource):
class Meta:
model = UserProfile
import_id_fields = (
'user',
'city',
'state',
'country',
'gender',
'source_of_registration',
)
skip_unchanged = True
report_skipped = False
use_bulk= True
fields = (
'user',
'contact',
'about_me',
'longitude',
'latitude',
'age',
'dob',
'zip_code',
'is_profile_completed',
'created_on',
'updated_on',
'city',
'state',
'country',
'gender',
'source_of_registration',
'profile_completed_on',
)
我想从一个地方导入用户数据和用户配置文件数据,UserProfileModelAdmin,我现在完全迷路了,任何人都可以给我一个提示,如何有效地使用 django_import_export 解决这个问题。
我也看过这个解决方案,但它对我不起作用 - https://github.com/django-import-export/django-import-export/issues/319
谢谢,任何形式的提示将不胜感激。