0
셀시주기 태스크의 필드를 미리 채우는 데 사용되는 rsync 구성처럼 작동하는이 간단한 모델이 있습니다. 처음으로 새로운 rsync 설정 물마루를 만들면 모든 것이 정상이며 새로운 주기적 작업이 문제없이 생성됩니다. 내가 시도하고 작업 인수와 같은 작업 필드를 변경하는 특정 필드를 변경하면 "IntegrityError 열 이름이 고유하지 않습니다"나는 그것이 모델 저장 방법과 관련이 있다고 생각하지만 어떻게해야할지 모르겠다. 알았어. 누구 한테 아이디어가 있니? 여기 Django-Celery IntegrityError 고유하지 않은 열 이름
는 모델 :from django.forms import ModelForm
from djcelery.models import IntervalSchedule
from djcelery.models import PeriodicTask, IntervalSchedule
INTERVAL=(
('every=5','period 5 minutes'),
)
class Customer(models.Model):
"""(Customer description)"""
customername = models.CharField(blank=True, max_length=30)
emailaddress = models.EmailField()
phonenumber = models.CharField(blank=True, max_length=10)
class Meta:
verbose_name_plural = "Customer"
def __unicode__(self):
return self.customername
class RsyncConfig(models.Model):
"""(RsyncConfig description)"""
cname = models.ForeignKey(Customer)
rsyncname = models.CharField(blank=True, max_length=255)
interval=models.CharField(max_length=8,choices=INTERVAL)
fromip = models.IPAddressField(blank=True)
source_dir = models.CharField(blank=True, max_length=255)
destination_dir = models.CharField(blank=True, max_length=255)
rsync_args = models.CharField(blank=True, max_length=255)
class Meta:
verbose_name_plural = "Rsync Config"
def __unicode__(self):
return self.cname.customername
그리고 여기 admin.py 양식입니다.
from django.contrib import admin
from django import forms
from djcelery.models import PeriodicTask, IntervalSchedule
from newrsync.models import Customer,RsyncConfig
class CustomerAdmin(admin.ModelAdmin):
class Meta:
model = Customer
class RsyncConfigAdminForm(forms.ModelForm):
list_display = ('customername', 'rsyncname','source_dir','destination_dir')
class Meta:
model = RsyncConfig
def __init__(self, *args, **kwargs):
super(RsyncConfigAdminForm,self).__init__(*args, **kwargs)
def save(self, commit=True):
interval = IntervalSchedule.objects.get(every=5,period="minutes")
model = super(RsyncConfigAdminForm, self).save(commit = False)
model.cname = self.cleaned_data['cname']
model.rsyncname = self.cleaned_data['rsyncname']
model.fromip = self.cleaned_data['fromip']
model.source_dir = self.cleaned_data['source_dir']
model.destination_dir = self.cleaned_data['destination_dir']
model.rsync_args = self.cleaned_data['rsync_args']
if commit:
model.save()
PeriodicTask.objects.get_or_create(
interval=interval,
task='apps.mftconfig.tasks.rsync_proc',
args=['rsync',
model.rsync_args,
model.source_dir,
model.destination_dir],
kwargs = {},
name = (model.cname," ",model.rsyncname),
enabled=False
)
return model
class RsyncConfigAdmin(admin.ModelAdmin):
form = RsyncConfigAdminForm
list_display = ('cname', 'rsyncname','source_dir','destination_dir')
admin.site.register(Customer,CustomerAdmin)
admin.site.register(RsyncConfig,RsyncConfigAdmin)
0) 들여 쓰기를 save()에서 수정하고 1) django 쉘에서 문제를 재현하고 쉘 세션 + 추적을 붙여 넣을 수 있습니까? – jpic
안녕하세요 jpic, 신빙성이 좋아 보입니까? 그리고 셸의 문제를 재현하여 무슨 뜻인지 확실하지 않습니다. 그것은 형식입니다, 그리고 양식없이 그것을 재현하는 방법을 모르겠습니다? – Daxomatic
양식없이 양식을 재현하십시오. 양식 RsyncConfigAdminForm (데이터 = {...})로 시도하십시오 – jpic